openapi: 3.0.0
info:
  title: Open-Meteo APIs
  description: 'Open-Meteo offers free weather forecast APIs for open-source developers and non-commercial use. No API key is required.'
  version: '1.0'
  contact:
    name: Open-Meteo
    url: https://open-meteo.com
    email: info@open-meteo.com
  license:
    name: Attribution 4.0 International (CC BY 4.0)
    url: https://creativecommons.org/licenses/by/4.0/
  termsOfService: https://open-meteo.com/en/features#terms
paths:
  /v1/forecast:
    servers:
      - url: https://api.open-meteo.com
    get:
      tags:
      - Weather Forecast APIs
      summary: 7 day weather forecast for coordinates
      description: 7 day weather variables in hourly and daily resolution for given WGS84 latitude and longitude coordinates. Available worldwide.
      parameters:
      - name: hourly
        in: query
        explode: false
        schema:
          type: array
          items:
            type: string
            enum:
            - temperature_2m
            - relative_humidity_2m
            - dew_point_2m
            - apparent_temperature
            - pressure_msl
            - cloud_cover
            - cloud_cover_low
            - cloud_cover_mid
            - cloud_cover_high
            - wind_speed_10m
            - wind_speed_80m
            - wind_speed_120m
            - wind_speed_180m
            - wind_direction_10m
            - wind_direction_80m
            - wind_direction_120m
            - wind_direction_180m
            - wind_gusts_10m
            - shortwave_radiation
            - direct_radiation
            - direct_normal_irradiance
            - diffuse_radiation
            - vapour_pressure_deficit
            - evapotranspiration
            - precipitation
            - weather_code
            - snow_height
            - freezing_level_height
            - soil_temperature_0cm
            - soil_temperature_6cm
            - soil_temperature_18cm
            - soil_temperature_54cm
            - soil_moisture_0_1cm
            - soil_moisture_1_3cm
            - soil_moisture_3_9cm
            - soil_moisture_9_27cm
            - soil_moisture_27_81cm
      - name: daily
        in: query
        schema:
          type: array
          items:
            type: string
            enum:
            - temperature_2m_max
            - temperature_2m_min
            - apparent_temperature_max
            - apparent_temperature_min
            - precipitation_sum
            - precipitation_hours
            - weather_code
            - sunrise
            - sunset
            - wind_speed_10m_max
            - wind_gusts_10m_max
            - wind_direction_10m_dominant
            - shortwave_radiation_sum
            - uv_index_max
            - uv_index_clear_sky_max
            - et0_fao_evapotranspiration
      - name: latitude
        in: query
        required: true
        description: "WGS84 coordinate"
        schema:
          type: number
          format: float
      - name: longitude
        in: query
        required: true
        description: "WGS84 coordinate"
        schema:
          type: number
          format: float
      - name: current_weather
        in: query
        schema:
          type: boolean
      - name: temperature_unit
        in: query
        schema:
          type: string
          default: celsius
          enum:
          - celsius
          - fahrenheit
      - name: wind_speed_unit
        in: query
        schema:
          type: string
          default: kmh
          enum:
          - kmh
          - ms
          - mph
          - kn
      - name: timeformat
        in: query
        description: If format `unixtime` is selected, all time values are returned in UNIX epoch time in seconds. Please not that all time is then in GMT+0! For daily values with unix timestamp, please apply `utc_offset_seconds` again to get the correct date.
        schema:
          type: string
          default: iso8601
          enum:
          - iso8601
          - unixtime
      - name: timezone
        in: query
        description: If `timezone` is set, all timestamps are returned as local-time and data is returned starting at 0:00 local-time. Any time zone name from the [time zone database](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) is supported.
        schema:
          type: string
      - name: past_days
        in: query
        description: If `past_days` is set, yesterdays or the day before yesterdays data are also returned.
        schema:
          type: integer
          enum:
          - 1
          - 2
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  latitude:
                    type: number
                    example: 52.52
                    description: WGS84 of the center of the weather grid-cell which was used to generate this forecast. This coordinate might be up to 5 km away.
                  longitude:
                    type: number
                    example: 13.419.52
                    description: WGS84 of the center of the weather grid-cell which was used to generate this forecast. This coordinate might be up to 5 km away.
                  elevation:
                    type: number
                    example: 44.812
                    description: The elevation in meters of the selected weather grid-cell. In mountain terrain it might differ from the location you would expect.
                  generationtime_ms:
                    type: number
                    example: 2.2119
                    description: Generation time of the weather forecast in milli seconds. This is mainly used for performance monitoring and improvements.
                  utc_offset_seconds:
                    type: integer
                    example: 3600
                    description: Applied timezone offset from the &timezone= parameter.
                  hourly:
                    type: HourlyResponse
                    description: For each selected weather variable, data will be returned as a floating point array. Additionally a `time` array will be returned with ISO8601 timestamps.
                  hourly_units:
                    type: object
                    additionalProperties:
                      type: string
                    description: For each selected weather variable, the unit will be listed here.
                  daily:
                    type: DailyResponse
                    description: For each selected daily weather variable, data will be returned as a floating point array. Additionally a `time` array will be returned with ISO8601 timestamps.
                  daily_units:
                    type: object
                    additionalProperties:
                      type: string
                    description: For each selected daily weather variable, the unit will be listed here.
                  current_weather:
                    type: CurrentWeather
                    description: "Current weather conditions with the attributes: time, temperature, wind_speed, wind_direction and weather_code"
        400:
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: boolean
                    description: Always set true for errors
                  reason:
                    type: string
                    description: Description of the error
                    example: "Latitude must be in range of -90 to 90°. Given: 300"
components:
  schemas:
    HourlyResponse:
      type: object
      required:
        - time
      properties:
        time:
          type: array
          items:
            type: string
        temperature_2m:
          type: array
          items:
            type: float
        relative_humidity_2m:
          type: array
          items:
            type: float
        dew_point_2m:
          type: array
          items:
            type: float
        apparent_temperature:
          type: array
          items:
            type: float
        pressure_msl:
          type: array
          items:
            type: float
        cloud_cover:
          type: array
          items:
            type: float
        cloud_cover_low:
          type: array
          items:
            type: float
        cloud_cover_mid:
          type: array
          items:
            type: float
        cloud_cover_high:
          type: array
          items:
            type: float
        wind_speed_10m:
          type: array
          items:
            type: float
        wind_speed_80m:
          type: array
          items:
            type: float
        wind_speed_120m:
          type: array
          items:
            type: float
        wind_speed_180m:
          type: array
          items:
            type: float
        wind_direction_10m:
          type: array
          items:
            type: float
        wind_direction_80m:
          type: array
          items:
            type: float
        wind_direction_120m:
          type: array
          items:
            type: float
        wind_direction_180m:
          type: array
          items:
            type: float
        wind_gusts_10m:
          type: array
          items:
            type: float
        shortwave_radiation:
          type: array
          items:
            type: float
        direct_radiation:
          type: array
          items:
            type: float
        direct_normal_irradiance:
          type: array
          items:
            type: float
        diffuse_radiation:
          type: array
          items:
            type: float
        vapour_pressure_deficit:
          type: array
          items:
            type: float
        evapotranspiration:
          type: array
          items:
            type: float
        precipitation:
          type: array
          items:
            type: float
        weather_code:
          type: array
          items:
            type: float
        snow_height:
          type: array
          items:
            type: float
        freezing_level_height:
          type: array
          items:
            type: float
        soil_temperature_0cm:
          type: array
          items:
            type: float
        soil_temperature_6cm:
          type: array
          items:
            type: float
        soil_temperature_18cm:
          type: array
          items:
            type: float
        soil_temperature_54cm:
          type: array
          items:
            type: float
        soil_moisture_0_1cm:
          type: array
          items:
            type: float
        soil_moisture_1_3cm:
          type: array
          items:
            type: float
        soil_moisture_3_9cm:
          type: array
          items:
            type: float
        soil_moisture_9_27cm:
          type: array
          items:
            type: float
        soil_moisture_27_81cm:
          type: array
          items:
            type: float
    DailyResponse:
      type: object
      properties:
        time:
          type: array
          items:
            type: string
        temperature_2m_max:
          type: array
          items:
            type: float
        temperature_2m_min:
          type: array
          items:
            type: float
        apparent_temperature_max:
          type: array
          items:
            type: float
        apparent_temperature_min:
          type: array
          items:
            type: float
        precipitation_sum:
          type: array
          items:
            type: float
        precipitation_hours:
          type: array
          items:
            type: float
        weather_code:
          type: array
          items:
            type: float
        sunrise:
          type: array
          items:
            type: float
        sunset:
          type: array
          items:
            type: float
        wind_speed_10m_max:
          type: array
          items:
            type: float
        wind_gusts_10m_max:
          type: array
          items:
            type: float
        wind_direction_10m_dominant:
          type: array
          items:
            type: float
        shortwave_radiation_sum:
          type: array
          items:
            type: float
        uv_index_max:
          type: array
          items:
            type: float
        uv_index_clear_sky_max:
          type: array
          items:
            type: float
        et0_fao_evapotranspiration:
          type: array
          items:
            type: float
      required:
        - time
    CurrentWeather:
      type: object
      properties:
        time:
          type: string
        temperature:
          type: float
        wind_speed:
          type: float
        wind_direction:
          type: float
        weather_code:
          type: int
      required:
        - time
        - temperature
        - wind_speed
        - wind_direction
        - weather_code
